package com.example.boot.acutuator.health;

import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 自定义组件健康状态监测，名字为HealthIndicator前面的（即必须要是HealthIndicator结尾），注意要放入spring容器中
 * @author shkstart
 * @creat 2021-04-07-下午10:01
 */

@Component
public class MyComHealthIndicator extends AbstractHealthIndicator {
    /**
     * 真实的检查方法，返回是up还是down
     * 想要返回具体信息，可以新建一个Map，往里加一些up、down等的描述信息
     * @param builder
     * @throws Exception
     */
    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {
        Map<String,Object> map=new HashMap<>();
//        builder.up();健康,Status里面有多种状态，可以看看，除了up都是不健康的
        builder.status(Status.UP);
//        builder.down();不健康
        //OUT_OF_SERVICE 连接超时
//        builder.status(Status.OUT_OF_SERVICE);
        map.put("msg","该组件健康");
//        withDetail()附带信息给你，也可以放map
        builder.withDetail("code",100)
                .withDetails(map);
    }
}
